package com.mmg.cosplay.task;

import com.mmg.cosplay.service.RankingListService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Slf4j
@RequiredArgsConstructor
@Component
public class RankingListTask {

    private final RankingListService rankingListService;

    /**
     * 每天凌晨0点清空排行榜数据并预热默认数据
     * cron表达式：秒 分 时 日 月 周
     * 0 0 0 * * ? 表示每天凌晨0点0分0秒执行
     */
    @Scheduled(cron = "0 0 0 * * ?")
    public void clearDailyRanking() {
        log.info("开始执行每日排行榜清空和预热任务");
        try {
            // clearTodayRanking方法已经包含了预热逻辑
            rankingListService.clearTodayRanking();
            log.info("每日排行榜清空和预热任务执行成功");
        } catch (Exception e) {
            log.error("每日排行榜清空和预热任务执行失败", e);
        }
    }

    /**
     * 测试用：每分钟执行一次（可用于测试，生产环境请注释掉）
     */
    // @Scheduled(cron = "0 * * * * ?")
    // public void testClearAndPreloadRanking() {
    //     log.info("测试：清空排行榜数据并预热");
    //     rankingListService.clearTodayRanking();
    // }
}